Add tsv mimeType support and raise clear error for xlsx in WQP - #232
Add tsv mimeType support and raise clear error for xlsx in WQP#232thodson-usgs wants to merge 1 commit into
Conversation
`_check_kwargs` now accepts `mimeType=tsv` alongside `csv`, defaults a missing mimeType to csv, and raises a clear NotImplementedError for `xlsx` that points at the csv/tsv options. `_read_wqp_csv` gained a `delimiter` argument (tab for tsv, comma otherwise, selected by the new `_wqp_delimiter` helper) so tsv responses parse correctly while still preserving leading zeros on code columns; `get_results` and the shared `_what` helper pass the mimeType-derived delimiter. Re-authored onto main's `_what`/`_read_wqp_csv` structure (it predated the DOI-USGS#320 what_* consolidation, the DOI-USGS#311 leading-zero fix, and the httpx migration); the branch's stale `requests_mock` tests are replaced with offline unit tests for the new behavior. Addresses DOI-USGS#162 (tsv support; xlsx now fails with a clear, actionable message rather than silently). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sjb14HkwuCydKSKMsaXsgd
dd00e2c to
788bda1
Compare
|
Closing this after re-evaluating it against current Measured against the live portalLegacy WQP does serve all three formats, so the premise of #162 holds:
But the getters return a DataFrame, so the wire format is unobservable to callers. csv and tsv parse to identical frames: Worse, WQX3 silently ignores That is precisely the quiet mangling Against current conventions
If this comes backThe motivation to look for is malformed WQP CSV quoting breaking real parses — a caller hitting Closing #162 alongside for the same reasons. |
Closes #162
Summary
_check_kwargsnow acceptsmimeType='tsv'alongside'csv'for legacy WQP callsmimeType='xlsx'raisesNotImplementedErrorwith a clear message (xlsx support is not yet implemented)ValueError: Invalid mimeType. Supported options: 'csv', 'tsv'._read_wqp_response(text, kwargs)helper that replaces 9 identicalpd.read_csv(..., delimiter=",")calls — uses\tdelimiter whenmimeType='tsv',,otherwiseNote: tsv support applies to legacy WQP calls only. WQX3.0 endpoints only support csv at this time, as noted in the original issue.
Test plan
test_check_kwargsupdated to covertsv(passes),xlsx(NotImplementedError), and unchanged casestest_get_results_tsvadded: mocks a tab-delimited response and verifies it is parsed correctly🤖 Generated with Claude Code